package depots

import "encoding/json"

// 消息内容
type Content struct {
	Intent Intent `json:"intent"`
}

// 意图
type Intent struct {
	Category         string      `json:"category"`
	IntentType       string      `json:"intentType"`
	Rc               int64       `json:"rc"`
	SemanticType     int64       `json:"semanticType"`
	Service          string      `json:"service"`
	Uuid             string      `json:"uuid"`
	Vendor           string      `json:"vendor"`
	Version          string      `json:"version"`
	Semantic         []Semantic  `json:"semantic"`
	State            interface{} `json:"state"`
	SessionIsEnd     interface{} `json:"sessionIsEnd"`
	ShouldEndSession interface{} `json:"shouldEndSession"`
	Answer           Answer      `json:"answer"`
	Data             Data        `json:"data"`
	Sid              string      `json:"sid"`
	Text             string      `json:"text"`
}

// 语义
type Semantic struct {
	Entrypoint string  `json:"entrypoint"`
	Hazard     bool    `json:"hazard"`
	Intent     string  `json:"intent"`
	Score      float64 `json:"score"`
	Slots      []Slot  `json:"slots"`
	Template   string  `json:"template"`
}

// 槽位
type Slot struct {
	Begin     int64  `json:"begin"`
	End       int64  `json:"end"`
	Name      string `json:"name"`
	NormValue string `json:"normValue"`
	Value     string `json:"value"`
}

// 时间槽位
// {"datetime":"T15:30:00","suggestDatetime":"2019-02-18T15:30:00"}
type TimeSlot struct {
	Datetime        string `json:"datetime"`
	SuggestDatetime string `json:"suggestDatetime"`
}

// 回答
type Answer struct {
	Text string `json:"text"`
	Type string `json:"type"`
}

// 云函数发送过来的数据
type Data struct {
	Result []XfyunResult `json:"result"`
}

const (
	ANSWER_TEXT = "T"
)

// 获取slot
func (intent *Intent) GetSlot(slotName string) *Slot {
	for _, v := range intent.Semantic[0].Slots {
		if v.Name == slotName {
			return &v
		}
	}
	return nil
}

func (intent *Intent) ToTimeSlot(stime string) *TimeSlot {
	ts := &TimeSlot{}
	if err := json.Unmarshal([]byte(stime), ts); err != nil {
		return nil
	}
	return ts
}
